﻿using Microsoft.Reporting.WebForms;
using QLBH.BUSINESS;
using QLBH.DATA;
using QLBH.DTO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace QLBH.UI
{
    public partial class baocao : System.Web.UI.Page
    {

        void InPhieuNhap()
        {
            string ma_phieu_nhap = "";
            if (Request.QueryString["ma_phieu_nhap"] != null)
                ma_phieu_nhap = Request.QueryString["ma_phieu_nhap"];

            DataTable dt = new DataTable();
            dt.Columns.Add("STT", typeof(int));
            dt.Columns.Add("MA_PHIEU_NHAP", typeof(string));
            dt.Columns.Add("MA_NHA_CUNG_CAP", typeof(string));
            dt.Columns.Add("MA_KHO_HANG", typeof(string));
            dt.Columns.Add("MA_NHAN_VIEN", typeof(string));
            dt.Columns.Add("NGAY_NHAP", typeof(DateTime));
            dt.Columns.Add("MA_CHUNG_TU_GOC", typeof(string));
            dt.Columns.Add("TAI_KHOAN_NO", typeof(string));
            dt.Columns.Add("TAI_KHOAN_CO", typeof(string));
            dt.Columns.Add("NGUOI_GIAO", typeof(string));
            dt.Columns.Add("MO_TA", typeof(string));
            dt.Columns.Add("MA_SAN_PHAM", typeof(string));
            dt.Columns.Add("SO_LUONG", typeof(decimal));
            dt.Columns.Add("GIA_NHAP", typeof(decimal));
            dt.Columns.Add("TEN_SAN_PHAM", typeof(string));
            dt.Columns.Add("HO_TEN", typeof(string));
            dt.Columns.Add("TEN_NHA_CUNG_CAP", typeof(string));
            dt.Columns.Add("DON_VI_TINH", typeof(string));
            dt.Columns.Add("TIEN_CHU", typeof(string));
            dt.Columns.Add("TEN_KHO_HANG", typeof(string));
            dt.Columns.Add("DIA_CHI", typeof(string));


            var PhieuNhap = PhieuNhapBus.TimPhieuNhapTheoMa(ma_phieu_nhap);
            int i = 0;
            string tien_chu = Util.ToString(PhieuNhap.CHI_TIET_NHAP.Sum(p => p.GIA_NHAP * p.SO_LUONG)).Trim();
            tien_chu = Regex.Replace(tien_chu, " +( |$)", "$1");
            foreach (var item in PhieuNhap.CHI_TIET_NHAP.ToList())
            {
                dt.Rows.Add(i + 1, item.MA_PHIEU_NHAP, PhieuNhap.NHA_CUNG_CAP.MA_NHA_CUNG_CAP, PhieuNhap.KHO_HANG.MA_KHO_HANG, PhieuNhap.NHAN_VIEN.MA_NHAN_VIEN, PhieuNhap.NGAY_NHAP, PhieuNhap.MA_CHUNG_TU_GOC, PhieuNhap.TAI_KHOAN_NO, PhieuNhap.TAI_KHOAN_CO, PhieuNhap.NGUOI_GIAO, PhieuNhap.MO_TA, item.MA_SAN_PHAM, item.SO_LUONG, item.GIA_NHAP, item.SAN_PHAM.TEN_SAN_PHAM, PhieuNhap.NHAN_VIEN.HO + " " + PhieuNhap.NHAN_VIEN.TEN, PhieuNhap.NHA_CUNG_CAP.TEN_NHA_CUNG_CAP, item.SAN_PHAM.DON_VI_TINH, tien_chu, PhieuNhap.KHO_HANG.TEN_KHO_HANG, PhieuNhap.KHO_HANG.DIA_CHI);
                i++;
            }


            ReportDataSource source = new ReportDataSource("DataSet1", dt);
            viewer.ProcessingMode = ProcessingMode.Local;
            viewer.LocalReport.ReportPath = Server.MapPath("~/UI/RdlcPhieunhap.rdlc");

            viewer.LocalReport.DataSources.Clear();
            viewer.LocalReport.DataSources.Add(source);
            viewer.LocalReport.Refresh();
        }


        void InPhieuXuat()
        {
            string ma_phieu_xuat = "";
            if (Request.QueryString["ma_phieu_xuat"] != null)
                ma_phieu_xuat = Request.QueryString["ma_phieu_xuat"];

            DataTable dt = new DataTable();
            dt.Columns.Add("STT", typeof(int));
            dt.Columns.Add("MA_PHIEU_XUAT", typeof(string));
            dt.Columns.Add("MA_KHACH_HANG", typeof(string));
            dt.Columns.Add("MA_KHO_HANG", typeof(string));
            dt.Columns.Add("MA_NHAN_VIEN", typeof(string));
            dt.Columns.Add("NGAY_XUAT", typeof(DateTime));
            dt.Columns.Add("SO_CHUNG_TU_GOC", typeof(string));
            dt.Columns.Add("TAI_KHOAN_NO", typeof(string));
            dt.Columns.Add("TAI_KHOAN_CO", typeof(string));
            dt.Columns.Add("GIAM_GIA", typeof(decimal));
            dt.Columns.Add("MO_TA", typeof(string));
            dt.Columns.Add("MA_SAN_PHAM", typeof(string));
            dt.Columns.Add("SO_LUONG", typeof(decimal));
            dt.Columns.Add("GIA_XUAT", typeof(decimal));
            dt.Columns.Add("TEN_SAN_PHAM", typeof(string));
            dt.Columns.Add("HO_TEN", typeof(string));
            dt.Columns.Add("TEN_KHACH_HANG", typeof(string));
            dt.Columns.Add("DON_VI_TINH", typeof(string));
            dt.Columns.Add("TIEN_CHU", typeof(string));
            dt.Columns.Add("TEN_KHO_HANG", typeof(string));
            dt.Columns.Add("DIA_CHI", typeof(string));
            dt.Columns.Add("VAT", typeof(decimal));
            dt.Columns.Add("SO_TIEN_NO", typeof(decimal));


            var Phieuxuat = PhieuXuatBus.TimPhieuXuatTheoMa(ma_phieu_xuat).FirstOrDefault();
            int i = 0;
            string tien_chu = Util.ToString(Phieuxuat.CHI_TIET_XUAT.Sum(p => p.GIA_XUAT * p.SO_LUONG_XUAT) + Phieuxuat.CHI_TIET_XUAT.Sum(p => p.GIA_XUAT * p.SO_LUONG_XUAT)*Phieuxuat.VAT/100 - Phieuxuat.GIAM_GIA).Trim();
            tien_chu = Regex.Replace(tien_chu, " +( |$)", "$1");
            foreach (var item in Phieuxuat.CHI_TIET_XUAT.ToList())
            {
                dt.Rows.Add(i + 1, item.MA_PHIEU_XUAT, Phieuxuat.KHACH_HANG.MA_KHACH_HANG, Phieuxuat.KHO_HANG.MA_KHO_HANG, Phieuxuat.NHAN_VIEN.MA_NHAN_VIEN, Phieuxuat.NGAY_XUAT, Phieuxuat.SO_CHUNG_TU_GOC, Phieuxuat.TAI_KHOAN_NO, Phieuxuat.TAI_KHOAN_CO, Phieuxuat.GIAM_GIA, Phieuxuat.MO_TA, item.MA_SAN_PHAM, item.SO_LUONG_XUAT, item.GIA_XUAT, item.SAN_PHAM.TEN_SAN_PHAM, Phieuxuat.NHAN_VIEN.HO + " " + Phieuxuat.NHAN_VIEN.TEN, Phieuxuat.KHACH_HANG.TEN_KHACH_HANG, item.SAN_PHAM.DON_VI_TINH, tien_chu, Phieuxuat.KHO_HANG.TEN_KHO_HANG, Phieuxuat.KHO_HANG.DIA_CHI,Phieuxuat.VAT,Phieuxuat.SO_TIEN_NO);
                i++;
            }


            ReportDataSource source = new ReportDataSource("DataSet1", dt);
            viewer.ProcessingMode = ProcessingMode.Local;
            viewer.LocalReport.ReportPath = Server.MapPath("~/UI/RdlcPhieuxuat.rdlc");

            viewer.LocalReport.DataSources.Clear();
            viewer.LocalReport.DataSources.Add(source);
            viewer.LocalReport.Refresh();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.QueryString["ma_phieu_nhap"] != null)
                    InPhieuNhap();

                if (Request.QueryString["ma_phieu_xuat"] != null)
                    InPhieuXuat();
                
            }
        }
    }
}